package com.ruoyi.zhgd.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.zhgd.util.PageUtils;
import com.ruoyi.zhgd.domain.vo.*;
import com.ruoyi.zhgd.domain.bo.NCementDataBo;
import com.ruoyi.common.core.page.TableDataInfo;
import com.ruoyi.common.core.domain.PageQuery;

import java.util.Collection;
import java.util.List;
import java.util.Map;

/**
 * 水稳拌合站数据Service接口
 *
 * @author zyb
 * @date 2023-09-06
 */
public interface INCementDataService {

    /**
     * 查询水稳拌合站数据
     */
    NCementDataVo queryById(String id);

    /**
     * 查询水稳拌合站数据列表
     */
    TableDataInfo<NCementDataVo> queryPageList(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 查询水稳拌合站数据列表
     */
    List<NCementDataVo> queryList(NCementDataBo bo);

    /**
     * 新增水稳拌合站数据
     */
    Boolean insertByBo(NCementDataBo bo);

    /**
     * 修改水稳拌合站数据
     */
    Boolean updateByBo(NCementDataBo bo);

    /**
     * 校验并批量删除水稳拌合站数据信息
     */
    Boolean deleteWithValidByIds(Collection<String> ids, Boolean isValid);

    String getLastYear(Map<String, Object> params);

    PageUtils queryPage(Page page, Map<String, Object> params);

    List<CementJwDataVo> handleList(List<CementJwDataVo> list);
    /**
     * 生产质量监控
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementDataVo> pageQuality(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 获取质量汇总分析数据分页列表
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementDataQualityStatisticsVo> pageQualityStatistics(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 总量校核
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementProduceWeightVo> pageCheck(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 水稳产量统计汇总
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementOutputSummaryVo> pageOutputStatistics(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 获取最新一条数据
     * @param params
     * @return
     */
    NCementDataVo getLastData(Map<String, Object> params);

    /**
     * 水稳项目产量统计
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementProjectStatisticsListVo> pageProjectStatistics(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 水稳材料消耗
     * @param bo
     * @param pageQuery
     * @return
     */
    TableDataInfo<NCementMaterielConsumeVo> pageMaterielConsume(NCementDataBo bo, PageQuery pageQuery);

    /**
     * 获取最新数据日期
     * @param params
     * @return
     */
    String getLastDay(Map<String, Object> params);

    /**
     * 历年产量数据
     * @param bo
     * @return
     */
    List<NCementOutputStatisticsVo> listForYear(NCementDataBo bo);

    /**
     * 月产量数据
     * @param bo
     * @return
     */
    List<NCementOutputStatisticsVo> listForMonth(NCementDataBo bo);

    /**
     * 日产量数据
     * @param bo
     * @return
     */
    List<NCementOutputStatisticsVo> listForDay(NCementDataBo bo);

    /**
     * 项目产量数据
     * @param bo
     * @return
     */
    List<NCementOutputStatisticsVo> listForProject(NCementDataBo bo);

    /**
     * 配方产量数据
     * @param bo
     * @return
     */
    List<NCementOutputStatisticsVo> listForMatch(NCementDataBo bo);

    /**
     * 手动校验
     * @param bo
     */
    void handCheck(NCementDataBo bo);
}
